#ifndef ALTPLUGIN_H
#define ALTPLUGIN_H

#include <QString>

#include <QtPlugin>

namespace Alt {
     /*! Base class for all Alt plugins. */
     class Plugin {
          //Application is a friend so that it can set m_filePath, without making it public, or needing a setter.
          friend class Application;
     public:
          /*! Destructor. */
          virtual ~Plugin() {}

          /*! A description of the plugin. */
          virtual QString pluginDescription() const = 0;

          /*! The plugin's name. */
          virtual QString pluginName() const = 0;

          /*! The file path of this plugin. */
          const QString& filePath() const { return m_filePath; }

     private:
          /*! The file path of this plugin. */
          QString m_filePath;
     };
}

Q_DECLARE_INTERFACE(Alt::Plugin, "com.herenbdy.Alt.AltPlugin/0.1.0");

#endif
